/*
 * @Author: wangchao
 * @Date: 2024-10-04 15:07:20
 * @LastEditors: wangchao
 * @LastEditTime: 2024-10-09 14:31:40
 * @FilePath: \JD-RTT-Driver\applications\u_app_stop.c
 * @Description:
 * Copyright (c) 2024 by Bingshan Guardian, All Rights Reserved.
 */
#include "u_app_stop.h"
//
VAR_APP_STOP_MODE current_app_stop_mode = STOP_DO_STANDARD;

/**
 * @Description: 获取当前停机模式
 * @Param:
 * @Return:
 */
VAR_APP_STOP_MODE get_current_app_stop_mode(void)
{
    return current_app_stop_mode;
}

/**
 * @Description: 设置当前停机模式
 * @Param:
 * @Return:
 */
void set_current_app_stop_mode(VAR_APP_STOP_MODE mode)
{
    current_app_stop_mode = mode;
}

/**
 * @Description: 标准停机模式
 * @Param:
 * @Return:
 */
USER_SHUTDOWN_STEP current_user_shutdown_step = USER_SHUTDOWN_STEP_PCS_STOP;

void handle_standard_stop(void)
{
    switch (current_user_shutdown_step)
    {
        case USER_SHUTDOWN_STEP_PCS_STOP:
            // PCS停机的代码
            break;

        case USER_SHUTDOWN_STEP_STOP_FLOW_CONTROL:
            // 停止流量控制的代码
            break;

        case USER_SHUTDOWN_STEP_STOP_PUMP:
            // 停止泵的代码
            break;

        case USER_SHUTDOWN_STEP_WAIT_PUMP_STOP:
            // 等待泵停止的代码
            break;

        case USER_SHUTDOWN_STEP_DELAY_WAIT_1:
            // 等待延时1的代码
            break;

        case USER_SHUTDOWN_STEP_CLOSE_OUTLET_VALVE:
            // 关闭出口阀的代码
            break;

        case USER_SHUTDOWN_STEP_WAIT_OUTLET_VALVE_CLOSE:
            // 等待出口阀关闭的代码
            break;

        case USER_SHUTDOWN_STEP_DELAY_WAIT_2:
            // 等待延时2的代码
            break;

        case USER_SHUTDOWN_STEP_HMI_FEEDBACK:
            // HMI反馈的代码
            break;

        default:
            // 未知步骤的处理
            break;
    }
}

/**
 * @Description: 紧急停机模式
 * @Param:
 * @Return:
 */

EMG_SHUTDOWN_STEP current_emg_shutdown_step = EMG_SHUTDOWN_STEP_STOP_PUMP;

void handle_emergency_stop(void)
{
    switch (current_emg_shutdown_step)
    {
        case EMG_SHUTDOWN_STEP_STOP_PUMP:
            // 停止泵的代码
            break;

        case EMG_SHUTDOWN_STEP_PCS_STOP:
            // PCS停机的代码
            break;

        case EMG_SHUTDOWN_STEP_ALERT_EMS:
            // 告警EMS的代码
            break;

        case EMG_SHUTDOWN_STEP_PCS_INTERLOCK_OFF:
            // PCS联锁断开的代码
            break;

        case EMG_SHUTDOWN_STEP_HMI_FEEDBACK:
            // HMI反馈的代码
            break;

        default:
            // 未知步骤的处理
            break;
    }
}

/**
 * @Description: 长期停机模式
 * @Param:
 * @Return:
 */
void handle_longtime_stop(void)
{
    ;
}

void app_do_stop_runner(void)
{
    switch (current_app_stop_mode)
    {
        case STOP_DO_STANDARD:
            handle_standard_stop();
            break;
        case STOP_DO_EMERGENCY:
            handle_emergency_stop();
            break;
        case STOP_DO_LONG_TIME:
            handle_longtime_stop();
            break;
        case STOP_DO_INTERRUPT:
            break;
        default:
            break;
    }
}